+--------------------------+--------+
| Variable_name | Value |
+--------------------------+--------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
+--------------------------+--------+
7 rows in set (0.00 sec)
ניסיתי לפעול לפי מה שכתוב בקטע הזה אבל עדיין קיבלתי את התוצאה שלמעלה.
יכול להיות שזה קשור לזה שיש לי בסיס נתונים קיים עם קידוד שהוא לא utf8? (פשוט העליתי אותו מקובץ גיבוי, ומשהו שם השתבש. אני צריך לשנות גם את זה... מישהו?)
9 תשובות
מה הבעיה ? אתה שולף סימני שאלה מהמסד?
שים לב שאתה עושה set names לאותו קידוד שבו נמצאים השדות בטבלה. כל השאר לא משנה.
חוץ מזה, אתה תמיד יכול לפתוח את קובץ הגיבוי ולהחליף את כל המופעים של
latin1 ב utf8
latin_swedish_ci ב utf8_general_ci
וכן, אני שולף ג'יבריש.
הבעיה היא ש-character_set_database ו-character_set_server עדיין נמצאים עם latin1. אתה אומר שפשוט צריך לשנות את הערכים שלהם שם בטבלה וזהו? זה לא רק "תופעת לוואי" של השינוי?
פתחתי את קובץ הגיבוי, והכול שם בסדר - ולא היה שם אפילו מופע אחד של latin1/latin_swedish_ci.
תוריד את הקובץ מהממסד, ואז כל מה שכתוב כlatin1 תחליף לutf8 (הידעת שאפשר לעשות החלף הכל בנוטפד++? O:) ותעלה, מניסיון זה עבד לי ^^
מה שהראת בשאלה הם ערכים גלובליים שנעקפים על ידי הגדרות לוקאליות של כל מסד, טבלה ועמודה.
תוודא שאתה עושה set names אחרי החיבור . ואם זה לא עוזר אז התגובה הראשונה פה.
בנוסף יכול מאוד להיות שכשהלאת את הגיבוי - לא היה set names ולכן הגיבוי עלה בתור latin1 במקום מה שצריך להיות.
עוד פעם, הערכים האלה משוכתבים על ידי ההגדרות הלוקאליות של כל עמודה,
אבל אתה בכל מקרה יכול גם לשנות את ההגדרות הכלליות והגדרות ברירת המחדל של המסד כולו דרך הקובץ /etc/my.cnf
לא עזר.
עדיין character_set_database ו-character_set_server עם latin1.
אחרי שאני אשנה אותם איכשהו, אני אוכל לשחזר את המסד מחדש.
איך? ניסיתי לפי כמה מדריכים, ועדיין שני אלה למעלה לא השתנו.
הם לא השתנו כי הם מוגדרים פר חיבור.
זה אומר שאתה צריך להיכנס לקונסול של mysql, להחליף קידוד עם set names ורק אז לבדוק \ לשלוף \ לייבא את הקובץ שלך.
לפי הדוגמה בשאלה עצמה - כל מה שהיה אפשר לשנות - השתנה.
ההגדרות של server ו database לא תלויות בחיבור אלה כלליות לשרת. אותם אפשר לשנות רק בקובץ הקונפיגורציה my.cnf
אבל הם לא אמורות להשפיע על שום דבר.
תוודא אגב שקובץ הגיבוי שלך עצמו שמור בתור utf-8 without bom
אוקיי, אני אנסה לשנות אותם. (גם אם זה לא ישפיע על זה ספציפית.)
הוא שמור כ-UTF-8. לא יודע לגבי ה-bom, אבל אם הוא היה - זה בכלל לא היה עובד, לא?
העליתי את האתר עצמו וכבר בדף הבית אפשר לראות שכל הטקסט נראה מעולה. יכול להיות שזה פשוט בעיה בתוכנה שבה השתמשתי ב-SSH? או שזה עדיין ככה, רק שהאתר ממיר את זה ל-UTF-8? (ואז זה לא טוב; ניצול משאבים מיותר.)